package cn.gdcp.recyclerview;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements IOnDelListener {
    private RecyclerView rlvStu;
    private ArrayList<Student> studentArrayList=new ArrayList<>();
    private ArrayList<Student> searchResultList=new ArrayList<>();
    private StuAdapter adapter;
    private Button btnAddStu;
    private EditText edtKeyword;
    private Button btnSearch;
    private boolean isResultList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        initStudentArrayList();
        initAdapter();
        initRecyclerView();
        initAddBtn();
        initSearchView();

        /*水平布局管理器*/
        LinearLayoutManager manager=new LinearLayoutManager(MainActivity.this);
        rlvStu.setLayoutManager(manager);
    }

    private void initSearchView() {
        edtKeyword=findViewById(R.id.edt_keyword);
        btnSearch=findViewById(R.id.btn_search);

        btnSearch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1.获取搜索框内的关键字
                String keyword=edtKeyword.getText().toString().trim();
                //trim() 清除关键字左右的空格
                //2.使用学生列表和关键字 得到搜索结果列表
                search(studentArrayList,keyword);
                adapter.changeData(searchResultList);
                isResultList=true;
            }
        });
        edtKeyword.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                //1.获取搜索框内的关键字
                String keyword=edtKeyword.getText().toString().trim();
                //trim() 清除关键字左右的空格
                //2.使用学生列表和关键字 得到搜索结果列表
                search(studentArrayList,keyword);
                adapter.changeData(searchResultList);
                isResultList=true;
            }
        });
    }

    private void search(ArrayList<Student> studentArrayList, String keyword) {
        searchResultList.clear();
        for(int i=0;i<studentArrayList.size();i++) {
            Student s = studentArrayList.get(i);
            //如果学生姓名包含了关键字 这个学生就添加到结果列表
            if (s.getName().contains(keyword)) {
                searchResultList.add(s);
            }
            //如果学生年龄等于关键字 这个学生就添加到结果列表
            else if (String.valueOf(s.getAge()).equals(keyword)) {
                searchResultList.add(s);
            }
        }
    }

    private void initAddBtn() {
        btnAddStu=findViewById(R.id.btn_addStu);
        btnAddStu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setClass(MainActivity.this,AddActivity.class);
                startActivityForResult(intent,1001);
            }
        });
    }

    private void initRecyclerView() {
        rlvStu=findViewById(R.id.rlv_stu);
        rlvStu.setAdapter(adapter);
    }

    private void initAdapter() {
        adapter=new StuAdapter(MainActivity.this,studentArrayList,
                MainActivity.this);
    }
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
        Log.e("MainActivity","requestCode="+requestCode+"resultCode="+resultCode);
        if(data==null){
            return;
        }
        if(resultCode==2001){
            String name=data.getStringExtra("NAME");
            int age=data.getIntExtra("AGE",0);
            int imgId=data.getIntExtra("IMG",R.drawable.dog1);
            Student s=new Student("18001",name,age,imgId);
            studentArrayList.add(s);
            adapter.notifyDataSetChanged();
        }
        else if(resultCode==3001){
            String name=data.getStringExtra("NAME");
            int age=data.getIntExtra("AGE",0);
            int imgId=data.getIntExtra("IMG",R.drawable.dog1);
            String no=data.getStringExtra("NO");

            for(int i=0;i<studentArrayList.size();i++){
                Student s=studentArrayList.get(i);
                if(s.getNo().equals(no)){
                    s.setName(name);
                    s.setAge(age);
                    s.setimgId(imgId);
                }
            }
            String keyword=edtKeyword.getText().toString().trim();
            //trim() 清除关键字左右的空格
            //2.使用学生列表和关键字 得到搜索结果列表
            search(studentArrayList,keyword);
            adapter.changeData(searchResultList);
            isResultList=true;
            adapter.notifyDataSetChanged();
        }

    }

    /*初始化学生列表*/
    private void initStudentArrayList() {
        Student s1=new Student("18001","张一",20,R.drawable.dog1);
        Student s2=new Student("18002","张二",21,R.drawable.dog2);
        Student s3=new Student("18003","张三",22,R.drawable.dog3);
        Student s4=new Student("18004","张四",23,R.drawable.dog4);
        Student s5=new Student("18005","张五",24,R.drawable.dog5);
        studentArrayList.add(s1);
        studentArrayList.add(s2);
        studentArrayList.add(s3);
        studentArrayList.add(s4);
        studentArrayList.add(s5);

    }

    @Override
    public void del(int i) {
        Log.i("MainActivity","del"+i);
        studentArrayList.remove(i);
        adapter.notifyDataSetChanged();
    }
}
